草庐IT

MySQL Workbench 符号引用

全部标签

c# - 数组或对象的指针/引用句柄会影响其大小吗?

我知道,如果我有一个数组intA[512],那么引用A可以指向第一个元素。在指针运算中,内存被引用为A+index。但如果我没记错的话,指针/引用也会占用一个机器字空间。假设一个int占一个机器字,是不是意味着上面数组的512个整数占了513个字的空间?C++或C#中的对象及其数据成员是否相同?更新:哇,你们真快。澄清一下,我感兴趣的是C++和C#在处理此问题的方式上不同,以及我如何调整对象大小以适合缓存行(如果可能)。更新:我已经意识到指针和数组之间的区别。我知道数组不是指针,我上面引用的指针算法只有在数组转换为指针后才有效。但是,我认为这种区别与整个问题无关。我对数组和其他对象在C

c++ - 无法重载对 *this 的引用

这是我为N2439(“this”的引用限定符)使用gcc-4.8.1+中的新功能(我认为clang-2.9+也应该这样做)编写的一个busybox:classFoo{public:Foo(inti):_M_i(i){}intbar()&{return_M_i/=2;}intbar()const&{return_M_i;}intbar()&&{return2*_M_i;}private:int_M_i=42;};intmain(){Fooph(333);ph.bar();constFooff(123);ff.bar();Foo(333).bar();}在阅读标准8.3.5时,我认为三个b

c++ - 生成用于大规模重构/重命名的 C++ 符号列表

背景我继承了一个遗留的60klocg++项目,我想重构它以在整个项目中强制执行一致的命名约定。问题是否有免费/开源的静态分析工具可以生成以下列表:全局符号类名成员方法(公共(public)/protected/私有(private),如果可能)成员变量静态方法本地符号(可能会忽略这些)我可能遗漏的任何其他符号,但可能会影响代码的阅读者方法我的意图是使用vim来编辑生成的符号列表,然后使用Ruby脚本对符号进行非常粗略的搜索和替换/映射,这样至少命名约定是一致的。这个过程有点难看,我预计初始编译会失败,但如果我能有一组更具可读性的代码,我不介意手动解决问题。大型C++代码库的开发人员使用

c++ - 最令人烦恼的解析和指针间接/解引用

最少的代码:structA{A(int=0){}};inti=0,*p=&i;int*foo(){returnp;}intmain(){A();//calls`A::A(int=0)`A(i);//calls`A::A(int=0)`A(*p);//预计至少A((*p))会调用A::A(int=0)。即使在*p周围放置多个大括号,也会将语句视为A*p;。foo相关语句也是如此,其中构造函数A::A(int=0)没有被调用。这是一个demo.问题:为什么连(2)和(4)都被视为声明?语句(3)和(4)中foo的描述是什么? 最佳答案

c++ - 通过 const 引用延长临时生命周期

C++我正在尝试了解const引用如何延长临时对象的生命周期。我正在运行oneoftheanswerstoWhatarethedifferencesbetweenpointervariableandreferencevariableinC++?中的代码片段并在VC11和g++4.8之间得到了冲突的结果。我在这里扩展了代码段:#includestructscope_test{~scope_test(){printf("scope_testdone!\n");}};intmain(){constscope_test&test=scope_test();printf("inscope\n")

c++ - 更新版本化的 .NET 程序集引用

我有一个需要引用.NET程序集的C++/CLI项目。我是通过进入项目属性并单击“添加新引用”,然后浏览到程序集位置(它不是解决方案的一部分,所以我无法创建项目到项目引用,并且.NET程序集不在GAC中,因此在查看要添加的引用时它不在.NET选项卡中)当.NET程序集更新时(即,由于它是版本化的,它会每天增加其版本号),C++/CLI项目无法编译,因为它仍在引用旧版本。我一直在做的解决方法是删除.NET引用并将其重新添加进去,但这是不可行的。我如何让它识别较新的程序集??注意:较旧的程序集被较新的程序集替换,所以它在同一位置,但不知道它应该使用较新的版本。 最

c++ - 惰性符号绑定(bind)失败 : symbol not found

我有三个头文件inmyproject描述对象Rational,Complex,和RubyObject.前两个是模板。所有这些都可以使用在头文件中定义的复制构造函数相互转换——除了那些从constRubyObject&构造Rational和Complex的构造函数,定义inasourcefile.注意:这些定义是必要的。如果它们全部进入标题,您将得到circulardependency.不久前,我遇到了someunresolvedsymbolerrors使用源文件中定义的两个复制构造函数。我能够在源文件中包含以下函数voidnm_init_data(){nm::RubyObjectobj

c++ - 错误 C2662 无法从 const 转换为引用

这是我关于堆栈溢出的第一篇文章,我希望将来能加入社区。我正在为ADT类编写哈希表实现;我的大部分方法都在作业范围内达到了标准,但这让我很伤心。在这个我一直用来测试我编写的各种函数的测试应用程序中,我收到错误“errorC2662:'customer::getPhone':cannotconvert'this'ponterfrom'constcustomer'to'customer&'引用行“光标=find_ptr(entry.getPhone());”和“list_head_insert(data[hash(entry.getPhone())],entry);”我的函数实现代码如下:t

c++ - 存储右值引用 : should this work?

我正在通过故意破坏事物来测试我对左值和右值引用的理解。所以说有这个结构:structFooBar{FooBar(int&&number):rNumber(number){}int&rNumber;};然后我创建了一个实例FooBarobj(5)。每次尝试读取引用变量都会返回正确的结果(5)。如果我使用constint&而不是int&&,也会发生同样的情况。我注意到将int替换为std::string并读取引用会返回一个空字符串,因此我怀疑它给出了未定义的行为。是这样吗?如果是这样,为什么它适用于整数?更新:我正在创建实例并像这样读取它:FooBarobj(5);//FooBarobj(

深度解析C++引用:优雅指针的背后故事

今天我们将深入探讨C++中一个令人着迷的特性——引用。了解和善用引用不仅可以让我们的代码更为优雅,还能提升程序的性能和可维护性。1.什么是C++引用?在C++中,引用是一种允许程序员使用一个已经存在的变量别名的机制。引用提供了对变量的间接访问,允许我们通过不同的名字来操作同一块内存。它在声明时使用&符号,如下所示:intoriginalVar=42;int&refVar=originalVar;//引用的声明这里,refVar成为了originalVar的引用,它们共享相同的内存地址。2.引用vs.指针引用和指针都提供了对变量的间接访问,但它们之间存在关键区别。引用必须在声明时初始化,并且一旦